package CapaDatos;

import CapaDatos.listas.ListaReservaciones;
import java.util.List;

public class Cliente extends Persona
{
    private static final int VIP = 10;
    private char estadoCivil;
    private String usuario;
    private String clave;
    private String nacionalidad;
    private boolean vip;
    private ListaReservaciones reservaciones;

    public Cliente (String nombre, String apellido, String cedula, char sexo, char estadoCivil, String fechaNacimiento, String usuario, String clave, String nacionalidad)
    {
        super(nombre, apellido, cedula, sexo, fechaNacimiento);

        this.estadoCivil = estadoCivil;
        this.usuario = usuario;
        this.clave = clave;
        this.nacionalidad = nacionalidad;
        this.reservaciones = new ListaReservaciones();
        this.vip = false;
    }

    public Cliente (String nombre, String apellido, String cedula, char sexo, char estadoCivil, String fechaNacimiento, String usuario, String clave, String nacionalidad, List reservaciones)
    {
        super(nombre, apellido, cedula, sexo, fechaNacimiento);

        this.estadoCivil = estadoCivil;
        this.usuario = usuario;
        this.clave = clave;
        this.nacionalidad = nacionalidad;
        this.reservaciones = new ListaReservaciones(reservaciones);

        if (this.reservaciones.cantidad() >= VIP)
            this.vip = true;
        else
            this.vip = false;
    }

    // <editor-fold defaultstate="collapsed" desc="Getters y Setters">
    public char getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(char estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public boolean isVIP() {
        return vip;
    }

    public void setVIP (boolean VIP) {
        this.vip = VIP;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario (String usuario) {
        this.usuario = usuario;
    }

    public String getClave() {
        return clave;
    }

    public void setClave (String clave) {
        this.clave = clave;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad (String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public Reservacion[] getReservaciones() {
        return reservaciones.array();
    }

    public void setReservaciones (List reservaciones) {
        this.reservaciones = new ListaReservaciones(reservaciones);
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="Manejo de Reservaciones">
    public boolean agregarReservacion(Reservacion reservacion) {
        String mensaje = reservaciones.agregar(reservacion);
        String resultado[] = mensaje.split(":");

        if (!resultado[1].equals("TRUE"))
            return false;

        if (!vip && reservaciones.cantidad() >= VIP)
            vip = true;

        return true;
    }

    public boolean cancelarReservacion (String ID) {
        if (!reservaciones.eliminar(ID))
            return false;

        if (reservaciones.cantidad() < 21)
            vip = false;

        return reservaciones.eliminar(ID);
    }
    // </editor-fold>
}
